home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / Dev / Oberon / source / amiga / Datatypes.mod < prev    next >
Text File  |  1995-06-29  |  38KB  |  1,351 lines

  1. (*************************************************************************
  2.  
  3.      $RCSfile: Datatypes.mod $
  4.   Description: Interface to datatypes.
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 3.7 $
  8.       $Author: fjc $
  9.         $Date: 1995/06/04 23:13:14 $
  10.  
  11.   Includes Release 40.15
  12.  
  13.   (C) Copyright 1991-1993 Commodore-Amiga, Inc.
  14.       All Rights Reserved
  15.  
  16.   Oberon-A Interface Copyright © 1994-1995, Frank Copeland.
  17.   This file is part of the Oberon-A Interface.
  18.   See Oberon-A.doc for conditions of use and distribution.
  19.  
  20. *************************************************************************)
  21.  
  22. <* STANDARD- *>
  23.  
  24. MODULE [2] Datatypes;
  25.  
  26. IMPORT
  27.   SYS := SYSTEM, Kernel, e := Exec, u := Utility, d := Dos,
  28.   gfx := Graphics, p := Printer, IFF := IFFParse, i := Intuition,
  29.   s := Sets;
  30.  
  31. (*
  32. ** Declare pointer types.
  33. *)
  34.  
  35. TYPE
  36.  
  37.   DataTypeHeaderPtr * = POINTER TO DataTypeHeader;
  38.   HookContextPtr * = POINTER TO HookContext;
  39.   ToolPtr * = POINTER TO Tool;
  40.   DataTypePtr * = POINTER TO DataType;
  41.   ToolNodePtr * = POINTER TO ToolNode;
  42.   SpecialInfoPtr * = POINTER TO SpecialInfo;
  43.   MethodPtr * = POINTER TO Method;
  44.   FrameInfoPtr * = POINTER TO FrameInfo;
  45.   LinePtr * = POINTER TO Line;
  46.   BitMapHeaderPtr * = POINTER TO BitMapHeader;
  47.   ColorRegisterPtr * = POINTER TO ColorRegister;
  48.   VoiceHeaderPtr * = POINTER TO VoiceHeader;
  49.   AnimHeaderPtr * = POINTER TO AnimHeader;
  50.  
  51.  
  52. (*
  53. **      $VER: datatypes.h 39.6 (22.4.93)
  54. *)
  55.  
  56. (*****************************************************************************)
  57.  
  58. CONST
  59.  
  60.   idDTYP * = 044545950H; (* MAKE_ID('D','T','Y','P') *)
  61.  
  62. (*****************************************************************************)
  63.  
  64. CONST
  65.  
  66.   idDTHD * = 044544844H; (* MAKE_ID('D','T','H','D') *)
  67.  
  68. TYPE
  69.  
  70.   MaskPtr * = POINTER TO ARRAY 1 OF INTEGER;
  71.   (* Really should be:
  72.   MaskPtr * = POINTER TO RECORD
  73.     b : BOOLEAN;
  74.     c : SYS.BYTE;
  75.   END; (* MaskPtr *)
  76.   *)
  77.  
  78.   DataTypeHeader * = RECORD
  79.     name *     : e.LSTRPTR; (* Descriptive name of the data type *)
  80.     baseName * : e.LSTRPTR; (* Base name of the data type *)
  81.     pattern *  : e.LSTRPTR; (* Match pattern for file name. *)
  82.     mask *     : MaskPtr;   (* Comparision mask *)
  83.     groupID *  : e.ULONG;   (* Group that the DataType is in *)
  84.     id *       : e.ULONG;   (* ID for DataType (same as IFF FORM type) *)
  85.     maskLen *  : INTEGER;   (* Length of comparision mask *)
  86.     pad *      : INTEGER;   (* Unused at present (must be 0) *)
  87.     flags *    : s.SET16;   (* Flags *)
  88.     priority * : e.UWORD;   (* Priority *)
  89.   END;
  90.  
  91. (*****************************************************************************)
  92.  
  93. CONST
  94.   hSize *= SIZE(DataTypeHeader);
  95.  
  96. (* Basic type *)
  97.   typeMaskSet * = {0..7};
  98.   typeMask *    = 0000FH;
  99.   binary *      = 00000H;
  100.   ascii *       = 00001H;
  101.   iff *         = 00002H;
  102.   misc *        = 00003H;
  103.  
  104. (* Set if case is important *)
  105.   case *        = 00010H;
  106.  
  107. (* Reserved for system use *)
  108.   system1 *     = 01000H;
  109.  
  110. (*****************************************************************************
  111.  *
  112.  * GROUP ID and ID
  113.  *
  114.  * This is used for filtering out objects that you don't want.  For
  115.  * example, you could make a filter for the ASL file requester so
  116.  * that it only showed the files that were pictures, or even to
  117.  * narrow it down to only show files that were ILBM pictures.
  118.  *
  119.  * Note that the Group ID's are in lower case, and always the first
  120.  * four characters of the word.
  121.  *
  122.  * For ID's; If it is an IFF file, then the ID is the same as the
  123.  * FORM type.  If it isn't an IFF file, then the ID would be the
  124.  * first four characters of name for the file type.
  125.  *
  126.  *****************************************************************************)
  127.  
  128. CONST
  129.  
  130. (* System file, such as; directory, executable, library, device, font, etc. *)
  131.   system *     = 073797374H; (* MAKE_ID ('s','y','s','t') *)
  132.  
  133. (* Formatted or unformatted text *)
  134.   text *       = 074657874H; (* MAKE_ID ('t','e','x','t') *)
  135.  
  136. (* Formatted text with graphics or other DataTypes *)
  137.   document *   = 0646F6375H; (* MAKE_ID ('d','o','c','u') *)
  138.  
  139. (* Sound *)
  140.   sound *      = 0736F756EH; (* MAKE_ID ('s','o','u','n') *)
  141.  
  142. (* Musical instruments used for musical scores *)
  143.   instrument * = 0696E7374H; (* MAKE_ID ('i','n','s','t') *)
  144.  
  145. (* Musical score *)
  146.   music *      = 06D757369H; (* MAKE_ID ('m','u','s','i') *)
  147.  
  148. (* Still picture *)
  149.   picture *    = 070696374H; (* MAKE_ID ('p','i','c','t') *)
  150.  
  151. (* Animated picture *)
  152.   animation *  = 0616E696DH; (* MAKE_ID ('a','n','i','m') *)
  153.  
  154. (* Animation with audio track *)
  155.   movie *      = 06D6F7669H; (* MAKE_ID ('m','o','v','i') *)
  156.  
  157. (*****************************************************************************)
  158.  
  159. CONST
  160.  
  161. (* A code chunk contains an embedded executable that can be loaded
  162.  * with InternalLoadSeg. *)
  163.   idCode * = 044544344H; (* MAKE_ID('D','T','C','D') *)
  164.  
  165. TYPE
  166.  
  167. (* DataTypes comparision hook context (Read-Only).  This is the
  168.  * argument that is passed to a custom comparision routine. *)
  169.  
  170.   HookContext * = RECORD
  171.     (* Libraries that are already opened for your use *)
  172.     sysBase -      : e.LibraryPtr;
  173.     dosBase -      : d.DosLibraryPtr;
  174.     iffParseBase - : e.LibraryPtr;
  175.     utilityBase -  : u.UtilityBasePtr;
  176.  
  177.     (* File context *)
  178.     lock -         : d.FileLockPtr;      (* Lock on the file *)
  179.     fib -          : d.FileInfoBlockPtr; (* Pointer to a FileInfoBlock *)
  180.     fileHandle -   : d.FileHandlePtr;    (* Pointer to the file handle (may be NULL) *)
  181.     iff -          : IFF.IFFHandlePtr;   (* Pointer to an IFFHandle (may be NULL) *)
  182.     buffer -       : e.LSTRPTR;          (* Buffer *)
  183.     bufferLength - : e.ULONG;            (* Length of the buffer *)
  184.   END;
  185.  
  186. (*****************************************************************************)
  187.  
  188. CONST
  189.  
  190.   idTool * = 04454544CH; (* MAKE_ID('D','T','T','L'); *)
  191.  
  192. TYPE
  193.  
  194.   Tool * = RECORD
  195.     which *   : e.UWORD;    (* Which tool is this *)
  196.     flags *   : s.SET16;    (* Flags *)
  197.     program * : e.LSTRPTR;  (* Application to use *)
  198.   END;
  199.  
  200. CONST
  201.   tSize *= SIZE(Tool);
  202.  
  203. (* defines for tn_Which *)
  204.   info *   = 1;
  205.   browse * = 2;
  206.   edit *   = 3;
  207.   print *  = 4;
  208.   mail *   = 5;
  209.  
  210. (* defines for tn_Flags *)
  211.   launchMaskSet * = {0..7};
  212.   launchMask *    = 0000FH;
  213.   shell *         = 00001H;
  214.   workbench *     = 00002H;
  215.   rx *            = 00003H;
  216.  
  217. (*****************************************************************************)
  218.  
  219. CONST
  220.  
  221.   idTags * = 044545447H; (* MAKE_ID('D','T','T','G'); *)
  222.  
  223. (*****************************************************************************)
  224.  
  225. TYPE
  226.  
  227.   DataType * = RECORD
  228.     node1 *        : e.Node;            (* Reserved for system use *)
  229.     node2 *        : e.Node;            (* Reserved for system use *)
  230.     header *       : DataTypeHeaderPtr; (* Pointer to the DataTypeHeader *)
  231.     toolList *     : e.List;            (* List of tool nodes *)
  232.     functionName * : e.LSTRPTR;         (* Name of comparision routine *)
  233.     attrList *     : u.TagListPtr;      (* Object creation tags *)
  234.     length *       : e.ULONG;           (* Length of the memory block *)
  235.   END;
  236.  
  237. CONST
  238.  
  239.   nSize *= SIZE(DataType);
  240.  
  241. (*****************************************************************************)
  242.  
  243. TYPE
  244.  
  245.   ToolNode * = RECORD (e.NodeBase)
  246.     node *   : e.Node;  (* Embedded node *)
  247.     tool *   : Tool;    (* Embedded tool *)
  248.     length * : e.ULONG; (* Length of the memory block *)
  249.   END;
  250.  
  251. CONST
  252.  
  253.   tnSize *= SIZE(ToolNode);
  254.  
  255. (*****************************************************************************)
  256.  
  257. CONST
  258.  
  259.   idNAME * = 04E414D45H; (* MAKE_ID('N','A','M','E') *)
  260.  
  261. (*****************************************************************************)
  262.  
  263. CONST
  264.  
  265. (* text ID's *)
  266.   errorUnknownDatatype *      = 2000;
  267.   errorCouldntSave *          = 2001;
  268.   errorCouldntOpen *          = 2002;
  269.   errorCouldntSendMessage *   = 2003;
  270.  
  271. (* new for V40 *)
  272.   errorCouldntOpenClipboard * = 2004;
  273.   errorReserved *             = 2005;
  274.   errorUnknownCompression *   = 2006;
  275.   errorNotEnoughData *        = 2007;
  276.   errorInvalidData *          = 2008;
  277.  
  278. (* Offset for types *)
  279.   msgTypeOffset * = 2100;
  280.  
  281. (*****************************************************************************)
  282.  
  283. (*
  284. **  $VER: datatypesclass.h 39.8 (17.3.93)
  285. **
  286. **  Interface definitions for DataType objects.
  287. *)
  288.  
  289. (*****************************************************************************)
  290.  
  291. CONST
  292.  
  293.   dataTypesClass * = "datatypesclass";
  294.  
  295. (*****************************************************************************)
  296.  
  297. CONST
  298.  
  299.   aDummy * = u.user + 01000H;
  300.  
  301. (* Generic attributes *)
  302.   textAttr * = aDummy+10;
  303.         (* (struct TextAttr * ) Pointer to the default TextAttr to use for
  304.          * the text within the object. *)
  305.  
  306.   topVert * = aDummy+11;
  307.         (* (LONG) Current top vertical unit *)
  308.  
  309.   visibleVert * = aDummy+12;
  310.         (* (LONG) Number of visible vertical units *)
  311.  
  312.   totalVert * = aDummy+13;
  313.         (* (LONG) Total number of vertical units *)
  314.  
  315.   vertUnit * = aDummy+14;
  316.         (* (LONG) Number of pixels per vertical unit *)
  317.  
  318.   topHoriz * = aDummy+15;
  319.         (* (LONG) Current top horizontal unit *)
  320.  
  321.   visibleHoriz * = aDummy+16;
  322.         (* (LONG)  Number of visible horizontal units *)
  323.  
  324.   totalHoriz * = aDummy+17;
  325.         (* (LONG) Total number of horizontal units *)
  326.  
  327.   horizUnit * = aDummy+18;
  328.         (* (LONG) Number of pixels per horizontal unit *)
  329.  
  330.   nodeName * = aDummy+19;
  331.         (* (UBYTE * ) Name of the current element within the object. *)
  332.  
  333.   title * = aDummy+20;
  334.         (* (UBYTE * ) Title of the object. *)
  335.  
  336.   triggerMethods * = aDummy+21;
  337.         (* (struct DTMethod * ) Pointer to a NULL terminated array of
  338.          * supported trigger methods. *)
  339.  
  340.   data * = aDummy+22;
  341.         (* (APTR) Object specific data. *)
  342.  
  343.   textFont * = aDummy+23;
  344.         (* (struct TextFont * ) Default font to use for text within the
  345.          * object. *)
  346.  
  347.   methods * = aDummy+24;
  348.         (* (ULONG * ) Pointer to a ~0 terminated array of supported
  349.          * methods. *)
  350.  
  351.   printerStatus * = aDummy+25;
  352.         (* (LONG) Printer error message.  Error numbers are defined in
  353.          * <devices/printer.h> *)
  354.  
  355.   printerProc * = aDummy+26;
  356.         (* PRIVATE (struct Process * ) Pointer to the print process. *)
  357.  
  358.   layoutProc * = aDummy+27;
  359.         (* PRIVATE (struct Process * ) Pointer to the layout process. *)
  360.  
  361.   busy * = aDummy+28;
  362.         (* Used to turn the applications' busy pointer off and on *)
  363.  
  364.   sync * = aDummy+29;
  365.         (* Used to indicate that new information has been loaded into
  366.          * an object.  This is for models that cache the DTA_TopVert-
  367.          * like tags *)
  368.  
  369.   baseName * = aDummy+30;
  370.         (* The base name of the class *)
  371.  
  372.   groupID * = aDummy+31;
  373.         (* Group that the object must belong in *)
  374.  
  375.   errorLevel * = aDummy+32;
  376.         (* Error level *)
  377.  
  378.   errorNumber * = aDummy+33;
  379.         (* datatypes.library error number *)
  380.  
  381.   errorString * = aDummy+34;
  382.         (* Argument for datatypes.library error *)
  383.  
  384.   conductor * = aDummy+35;
  385.         (* New for V40. (UBYTE * ) specifies the name of the
  386.          * realtime.library conductor.  Defaults to "Main". *)
  387.  
  388.   controlPanel * = aDummy+36;
  389.         (* New for V40. (BOOL) Indicate whether a control panel should be
  390.          * embedded within the object (in the animation datatype, for
  391.          * example).  Defaults to TRUe. *)
  392.  
  393.   immediate * = aDummy+37;
  394.         (* New for V40. (BOOL) Indicate whether the object should
  395.          * immediately begin playing.  Defaults to FALSe. *)
  396.  
  397.   repeat * = aDummy+38;
  398.         (* New for V40. (BOOL) Indicate that the object should repeat
  399.          * playing.  Defaults to FALSe. *)
  400.  
  401.  
  402. (* DTObject attributes *)
  403.   name * = aDummy+100;
  404.   sourceType * = aDummy+101;
  405.   handle * = aDummy+102;
  406.   dataType * = aDummy+103;
  407.   domain * = aDummy+104;
  408.  
  409. (* DON'T USE THE FOLLOWING FOUR TAGS.  USE THE CORRESPONDING TAGS IN
  410.  * <intuition/gadgetclass.h> *)
  411.   left * = aDummy+105;
  412.   top * = aDummy+106;
  413.   width * = aDummy+107;
  414.   height * = aDummy+108;
  415.  
  416.   objName * = aDummy+109;
  417.   objAuthor * = aDummy+110;
  418.   objAnnotation * = aDummy+111;
  419.   objCopyright * = aDummy+112;
  420.   objVersion * = aDummy+113;
  421.   objectID * = aDummy+114;
  422.   userData * = aDummy+115;
  423.   frameInfo * = aDummy+116;
  424.  
  425. (* DON'T USE THE FOLLOWING FOUR TAGS.  USE THE CORRESPONDING TAGS IN
  426.  * <intuition/gadgetclass.h> *)
  427.   relRight * = aDummy+117;
  428.   relBottom * = aDummy+118;
  429.   relWidth * = aDummy+119;
  430.   relHeight * = aDummy+120;
  431.  
  432.   selectDomain * = aDummy+121;
  433.   totalPVert * = aDummy+122;
  434.   totalPHoriz * = aDummy+123;
  435.   nominalVert * = aDummy+124;
  436.   nominalHoriz * = aDummy+125;
  437.  
  438. (* Printing attributes *)
  439.   destCols * = aDummy+400;
  440.         (* (LONG) Destination X width *)
  441.  
  442.   destRows * = aDummy+401;
  443.         (* (LONG) Destination Y height *)
  444.  
  445.   special * = aDummy+402;
  446.         (* (UWORD) Option flags *)
  447.  
  448.   rastPort * = aDummy+403;
  449.         (* (struct RastPort * ) RastPort to use when printing. (V40) *)
  450.  
  451.   arexxPortName * = aDummy+404;
  452.         (* (STRPTR) Pointer to base name for ARexx port (V40) *)
  453.  
  454.  
  455. (*****************************************************************************)
  456.  
  457.   stRam * = 1;
  458.   stFile * = 2;
  459.   stClipboard * = 3;
  460.   stHotlink * = 4;
  461.  
  462. (*****************************************************************************)
  463.  
  464. TYPE
  465.  
  466. (* Attached to the Gadget.SpecialInfo field of the gadget.  Don't access directly,
  467.  * use the Get/Set calls instead.
  468.  *)
  469.   SpecialInfo * = RECORD
  470.     lock *      :  e.SignalSemaphore; (* Locked while in DoAsyncLayout() *)
  471.     flags *     :  s.SET32;
  472.  
  473.     topVert *   :  LONGINT; (* Top row (in units) *)
  474.     visVert *   :  LONGINT; (* Number of visible rows (in units) *)
  475.     totVert *   :  LONGINT; (* Total number of rows (in units) *)
  476.     oTopVert *  :  LONGINT; (* Previous top (in units) *)
  477.     vertUnit *  :  LONGINT; (* Number of pixels in vertical unit *)
  478.  
  479.     topHoriz *  :  LONGINT; (* Top column (in units) *)
  480.     visHoriz *  :  LONGINT; (* Number of visible columns (in units) *)
  481.     totHoriz *  :  LONGINT; (* Total number of columns (in units) *)
  482.     oTopHoriz * :  LONGINT; (* Previous top (in units) *)
  483.     horizUnit * :  LONGINT; (* Number of pixels in horizontal unit *)
  484.   END;
  485.  
  486. CONST
  487.  
  488. (* Object is in layout processing *)
  489.   layout * = 0;
  490.  
  491. (* Object needs to be layed out *)
  492.   newSize * = 1;
  493.  
  494.   dragging * = 2;
  495.   dragSelect * = 3;
  496.  
  497.   highlight * = 4;
  498.  
  499. (* Object is being printed *)
  500.   printing * = 5;
  501.  
  502. (* Object is in layout process *)
  503.   sifLayoutProc * = 6;
  504.  
  505. (*****************************************************************************)
  506.  
  507. TYPE
  508.  
  509.   Method * = RECORD
  510.     label *   :  e.LSTRPTR;
  511.     command * :  e.LSTRPTR;
  512.     method *  :  e.ULONG;
  513.   END;
  514.  
  515. (*****************************************************************************)
  516.  
  517. CONST
  518.  
  519.   mDummy * = 0600H;
  520.  
  521. (* Inquire what environment an object requires *)
  522.   mFrameBox * = 0601H;
  523.  
  524. (* Same as GM_LAYOUT except guaranteed to be on a process already *)
  525.   mProcLayout * = 0602H;
  526.  
  527. (* Layout that is occurring on a process *)
  528.   mASyncLayout * = 0603H;
  529.  
  530. (* When a RemoveDTObject() is called *)
  531.   mRemoveDTObject * = 0604H;
  532.  
  533.   mSelect * = 0605H;
  534.   mClearSelected * = 0606H;
  535.  
  536.   mCopy * = 0607H;
  537.   mPrint * = 0608H;
  538.   mAbortPrint * = 0609H;
  539.  
  540.   mNewMember * = 0610H;
  541.   mDisposeMember * = 0611H;
  542.  
  543.   mGoto * = 0630H;
  544.   mTrigger * = 0631H;
  545.  
  546.   mObtainDrawInfo * = 0640H;
  547.   mDraw * = 0641H;
  548.   mReleaseDrawInfo * = 0642H;
  549.  
  550.   mWrite * = 0650H;
  551.  
  552. TYPE
  553. (* Used to ask the object about itself *)
  554.   Dimensions *= RECORD (* used by the following type *)
  555.     width  *: LONGINT;
  556.     height *: LONGINT;
  557.     depth  *: LONGINT;
  558.   END;
  559.  
  560.   FrameInfo * = RECORD
  561.     propertyFlags * : LONGINT;    (* DisplayInfo (graphics/displayinfo.h) *)
  562.     resolution *    : gfx.Point;  (* DisplayInfo *)
  563.  
  564.     redBits *       : e.UBYTE;
  565.     greenBits *     : e.UBYTE;
  566.     blueBits *      : e.UBYTE;
  567.  
  568.     dimensions *    : Dimensions;
  569.  
  570.     screen *        : i.ScreenPtr;
  571.     colorMap *      : gfx.ColorMapPtr;
  572.  
  573.     flags *         : s.SET32;
  574.   END;
  575.  
  576. CONST
  577.  
  578.   scalable * = 1;
  579.   scrollable * = 2;
  580.   remappable * = 4;
  581.  
  582. TYPE
  583.  
  584. (* DTM_REMOVEDTOBJECT, DTM_CLEARSELECTED, DTM_COPY, DTM_ABORTPRINT *)
  585.   General * = RECORD (i.MsgBase)
  586.     msg *   : i.Msg;
  587.     gInfo * : i.GadgetInfoPtr;
  588.   END;
  589.  
  590. (* DTM_SELECT *)
  591.   Select * = RECORD (i.MsgBase)
  592.     msg *    : i.Msg;
  593.     gInfo *  : i.GadgetInfoPtr;
  594.     select * : gfx.Rectangle;
  595.   END;
  596.  
  597. (* DTM_FRAMEBOX *)
  598.   FrameBox * = RECORD (i.MsgBase)
  599.     msg *           : i.Msg;
  600.     gInfo *         : i.GadgetInfoPtr;
  601.     contentsInfo *  : FrameInfoPtr;       (* Input *)
  602.     frameInfo *     : FrameInfoPtr;       (* Output *)
  603.     sizeFrameInfo * : e.ULONG;
  604.     frameFlags *    : s.SET32;
  605.   END;
  606.  
  607. CONST
  608.  
  609.   framefSpecify * = 0; (* Make do with the dimensions of FrameBox provided. *)
  610.  
  611. TYPE
  612.  
  613. (* DTM_GOTO *)
  614.   Goto * = RECORD (i.MsgBase)
  615.     msg *      : i.Msg;
  616.     gInfo *    : i.GadgetInfoPtr;
  617.     nodeName * : e.LSTRPTR;        (* Node to goto *)
  618.     attrList * : u.TagListPtr;     (* Additional attributes *)
  619.   END;
  620.  
  621. (* DTM_TRIGGER *)
  622.   Trigger * = RECORD (i.MsgBase)
  623.     msg *      : i.Msg;
  624.     gInfo *    : i.GadgetInfoPtr;
  625.     function * : e.ULONG;
  626.     data *     : e.APTR;
  627.   END;
  628.  
  629. CONST
  630.  
  631.   pause * = 1;
  632.   play * = 2;
  633.   contents * = 3;
  634.   index * = 4;
  635.   retrace * = 5;
  636.   browsePrev * = 6;
  637.   browseNext * = 7;
  638.  
  639.   nextField * = 8;
  640.   prevField * = 9;
  641.   activateField * = 10;
  642.  
  643.   command * = 11;
  644.  
  645. (* New for V40 *)
  646.   rewind * = 12;
  647.   fastForward * = 13;
  648.   stop * = 14;
  649.   resume * = 15;
  650.   locate * = 16;
  651.  
  652. TYPE
  653.  
  654. (* DTM_PRINT *)
  655.   PrintStd * = RECORD (i.MsgBase)
  656.     msg *      : i.Msg;
  657.     gInfo *    : i.GadgetInfoPtr;
  658.     ios *      : e.IOStdReqPtr;
  659.     attrList * : u.TagListPtr;
  660.   END;
  661.  
  662.   PrintDRP * = RECORD (i.MsgBase)
  663.     msg *      : i.Msg;
  664.     gInfo *    : i.GadgetInfoPtr;
  665.     iodrp *    : p.IODRPReqPtr;
  666.     attrList * : u.TagListPtr;
  667.   END;
  668.  
  669.   PrintPrtCmd * = RECORD (i.MsgBase)
  670.     msg *      : i.Msg;
  671.     gInfo *    : i.GadgetInfoPtr;
  672.     iopc *     : p.IOPrtCmdReqPtr;
  673.     attrList * : u.TagListPtr;
  674.   END;
  675.  
  676. (* DTM_DRAW *)
  677.   Draw * = RECORD (i.MsgBase)
  678.     msg *      : i.Msg;
  679.     rPort *    : gfx.RastPortPtr;
  680.     left *     : LONGINT;
  681.     top *      : LONGINT;
  682.     width *    : LONGINT;
  683.     height *   : LONGINT;
  684.     topHoriz * : LONGINT;
  685.     topVert *  : LONGINT;
  686.     attrList * : u.TagListPtr;                   (* Additional attributes *)
  687.   END;
  688.  
  689. (* DTM_WRITE *)
  690.   Write * = RECORD (i.MsgBase)
  691.     msg *        : i.Msg;
  692.     gInfo *      : i.GadgetInfoPtr; (* Gadget information *)
  693.     fileHandle * : d.FileHandlePtr; (* File handle to write to *)
  694.     mode *       : e.ULONG;
  695.     attrList *   : u.TagListPtr;    (* Additional attributes *)
  696.   END;
  697.  
  698. CONST
  699.  
  700. (* Save data as IFF data *)
  701.   wmIff * = 0;
  702.  
  703. (* Save data as local data format *)
  704.   wmRaw * = 1;
  705.  
  706. (*
  707. **  $VER: textclass.h 39.3 (3.8.92)
  708. **
  709. **  Interface definitions for DataType text objects.
  710. *)
  711.  
  712. (*****************************************************************************)
  713.  
  714. CONST
  715.  
  716.   textDTClass * = "text.datatype";
  717.  
  718. (*****************************************************************************)
  719.  
  720. CONST
  721.  
  722. (* Text attributes *)
  723.   buffer * = aDummy + 300;
  724.   bufferLen * = aDummy + 301;
  725.   lineList * = aDummy + 302;
  726.   wordSelect * = aDummy + 303;
  727.   wordDelim * = aDummy + 304;
  728.   wordWrap * = aDummy + 305;
  729.      (* Boolean. Should the text be word wrapped.  Defaults to false. *)
  730.  
  731. (*****************************************************************************)
  732.  
  733. TYPE
  734.  
  735. (* There is one Line structure for every line of text in our document.  *)
  736.   Line * = RECORD
  737.     link *    : e.MinNode; (* to link the lines together *)
  738.     text *    : e.LSTRPTR; (* pointer to the text for this line *)
  739.     textLen * : e.ULONG;   (* the character length of the text for this line *)
  740.     xOffset * : e.UWORD;   (* where in the line the text starts *)
  741.     yOffset * : e.UWORD;   (* line the text is on *)
  742.     width *   : e.UWORD;   (* Width of line in pixels *)
  743.     height *  : e.UWORD;   (* Height of line in pixels *)
  744.     flags *   : s.SET16;   (* info on the line *)
  745.     fgPen *   : e.BYTE;    (* foreground pen *)
  746.     bgPen *   : e.BYTE;    (* background pen *)
  747.     style *   : LONGINT;   (* Font style *)
  748.     data *    : e.APTR;    (* Link data... *)
  749.   END;
  750.  
  751. (*****************************************************************************)
  752.  
  753. (* Line.ln_Flags *)
  754.  
  755. CONST
  756.  
  757. (* Line Feed *)
  758.   lf * = 0;
  759.  
  760. (* Segment is a link *)
  761.   link * = 1;
  762.  
  763. (* ln_Data is a pointer to an DataTypes object *)
  764.   object * = 2;
  765.  
  766. (* Object is selected *)
  767.   selected * = 3;
  768.  
  769. (*****************************************************************************)
  770.  
  771. CONST
  772.  
  773. (* IFF types that may be text *)
  774.   idFTXT * = 046545854H; (* MAKE_ID('F','T','X','T') *)
  775.   idCHRS * = 043485253H; (* MAKE_ID('C','H','R','S') *)
  776.  
  777. (*****************************************************************************)
  778.  
  779. (*
  780. **  $VER: pictureclass.h 39.5 (28.4.93)
  781. **
  782. **  Interface definitions for DataType picture objects.
  783. *)
  784.  
  785. (*****************************************************************************)
  786.  
  787. CONST
  788.  
  789.   pictureDTClass * = "picture.datatype";
  790.  
  791. (*****************************************************************************)
  792.  
  793. CONST
  794.  
  795. (* Picture attributes *)
  796.   modeID * = aDummy + 200;
  797.         (* Mode ID of the picture *)
  798.  
  799.   bitMapHeader * = aDummy + 201;
  800.  
  801.   bitMap * = aDummy + 202;
  802.         (* Pointer to a class-allocated bitmap, that will end
  803.          * up being freed by picture.class when DisposeDTObject()
  804.          * is called *)
  805.  
  806.   colorRegisters * = aDummy + 203;
  807.   cRegs * = aDummy + 204;
  808.   gRegs * = aDummy + 205;
  809.   colorTable * = aDummy + 206;
  810.   colorTable2 * = aDummy + 207;
  811.   allocated * = aDummy + 208;
  812.   numColors * = aDummy + 209;
  813.   numAlloc * = aDummy + 210;
  814.  
  815.   remap * = aDummy + 211;
  816.         (* Boolean : Remap picture (defaults to TRUE) *)
  817.  
  818.   screen * = aDummy + 212;
  819.         (* Screen to remap to *)
  820.  
  821.   freeSourceBitMap * = aDummy + 213;
  822.         (* Boolean : Free the source bitmap after remapping *)
  823.  
  824.   grab * = aDummy + 214;
  825.         (* Pointer to a Point structure *)
  826.  
  827.   destBitMap * = aDummy + 215;
  828.         (* Pointer to the destination (remapped) bitmap *)
  829.  
  830.   classBitMap * = aDummy + 216;
  831.         (* Pointer to class-allocated bitmap, that will end
  832.          * up being freed by the class after DisposeDTObject()
  833.          * is called *)
  834.  
  835.   numSparse * = aDummy + 217;
  836.         (* (UWORD) Number of colors used for sparse remapping *)
  837.  
  838.   sparseTable * = aDummy + 218;
  839.         (* (UBYTE * ) Pointer to a table of pen numbers indicating
  840.          * which colors should be used when remapping the image.
  841.          * This array must contain as many entries as there
  842.          * are colors specified with PDTA_NumSparse *)
  843.  
  844. (*****************************************************************************)
  845.  
  846. CONST
  847.  
  848. (*  Masking techniques  *)
  849.   hasNone * = 0;
  850.   hasMask * = 1;
  851.   hasTransparentColor * = 2;
  852.   lasso * = 3;
  853.   hasAlpha * = 4;
  854.  
  855. (*  Compression techniques  *)
  856.   mpNone * = 0;
  857.   mpByteRun1 * = 1;
  858.   mpByteRun2 * = 2;
  859.  
  860. TYPE
  861.  
  862. (*  Bitmap header (BMHD) structure  *)
  863.   BitMapHeader * = RECORD
  864.     width *       : e.UWORD; (* Width in pixels *)
  865.     height *      : e.UWORD; (* Height in pixels *)
  866.     left *        : INTEGER; (* Left position *)
  867.     top *         : INTEGER; (* Top position *)
  868.     depth *       : e.UBYTE; (* Number of planes *)
  869.     masking *     : e.UBYTE; (* Masking type *)
  870.     compression * : e.UBYTE; (* Compression type *)
  871.     pad *         : e.UBYTE;
  872.     transparent * : e.UWORD; (* Transparent color *)
  873.     xAspect *     : e.UBYTE;
  874.     yAspect *     : e.UBYTE;
  875.     pageWidth *   : INTEGER;
  876.     pageHeight *  : INTEGER;
  877.   END;
  878.  
  879. (*****************************************************************************)
  880.  
  881. TYPE
  882.  
  883. (*  Color register structure *)
  884.   ColorRegister * = RECORD
  885.     red *, green *, blue * :  e.UBYTE;
  886.   END;
  887.  
  888. (*****************************************************************************)
  889.  
  890. CONST
  891.  
  892. (* IFF types that may be in pictures *)
  893.   idILBM * = 0494C424DH; (* MAKE_ID('I','L','B','M') *)
  894.   idBMHD * = 0424D4844H; (* MAKE_ID('B','M','H','D') *)
  895.   idBODY * = 0424F4459H; (* MAKE_ID('B','O','D','Y') *)
  896.   idCMAP * = 0434D4150H; (* MAKE_ID('C','M','A','P') *)
  897.   idCRNG * = 043524E47H; (* MAKE_ID('C','R','N','G') *)
  898.   idGRAB * = 047524142H; (* MAKE_ID('G','R','A','B') *)
  899.   idSPRT * = 053535254H; (* MAKE_ID('S','P','R','T') *)
  900.   idDEST * = 044455354H; (* MAKE_ID('D','E','S','T') *)
  901.   idCAMG * = 043414D47H; (* MAKE_ID('C','A','M','G') *)
  902.  
  903. (*
  904. **  $VER: soundclass.h 39.3 (26.4.93)
  905. **
  906. **  Interface definitions for DataType sound objects.
  907. *)
  908.  
  909. (*****************************************************************************)
  910.  
  911. CONST
  912.  
  913.   soundDTClass * = "sound.datatype";
  914.  
  915. (*****************************************************************************)
  916.  
  917. CONST
  918.  
  919. (* Sound attributes *)
  920.   sdtaDummy * = aDummy + 500;
  921.   voiceHeader * = sdtaDummy + 1;
  922.   sample * = sdtaDummy + 2;
  923.    (* (UBYTE * ) Sample data *)
  924.  
  925.   sampleLength * = sdtaDummy + 3;
  926.    (* (ULONG) Length of the sample data in UBYTEs *)
  927.  
  928.   period * = sdtaDummy + 4;
  929.     (* (UWORD) Period *)
  930.  
  931.   volume * = sdtaDummy + 5;
  932.     (* (UWORD) Volume.  Range from 0 to 64 *)
  933.  
  934.   cycles * = sdtaDummy + 6;
  935.  
  936. (* The following tags are new for V40 *)
  937.   signalTask * = sdtaDummy + 7;
  938.     (* (struct Task * ) Task to signal when sound is complete or
  939.         next buffer needed. *)
  940.  
  941.   signalBit * = sdtaDummy + 8;
  942.     (* (BYTE) Signal bit to use on completion or -1 to disable *)
  943.  
  944.   continuous * = sdtaDummy + 9;
  945.     (* (ULONG) Playing a continuous stream of data.  Defaults to
  946.         FALSe. *)
  947.  
  948. (*****************************************************************************)
  949.  
  950. CONST
  951.  
  952.   cmpNone * = 0;
  953.   cmpFibDelta * = 1;
  954.  
  955. TYPE
  956.  
  957.   VoiceHeader * = RECORD
  958.     oneShotHiSamples *  : e.ULONG;
  959.     repeatHiSamples *   : e.ULONG;
  960.     samplesPerHiCycle * : e.ULONG;
  961.     samplesPerSec *     : e.UWORD;
  962.     octaves *           : e.UBYTE;
  963.     compression *       : e.UBYTE;
  964.     volume *            : e.ULONG;
  965.   END;
  966.  
  967. (*****************************************************************************)
  968.  
  969. CONST
  970.  
  971. (* IFF types *)
  972.   id8SVX * = 038535658H; (* MAKE_ID('8','S','V','X') *)
  973.   idVHDR * = 056484452H; (* MAKE_ID('V','H','D','R') *)
  974.   (* idBODY * = 0424F4459H; (* MAKE_ID('B','O','D','Y') *) *)
  975.  
  976. (*****************************************************************************)
  977.  
  978. (*
  979. **  $VER: animationclass.h 40.1 (4.5.93)
  980. **
  981. **  Interface definitions for DataType animation objects.
  982. *)
  983.  
  984. (*****************************************************************************)
  985.  
  986. CONST
  987.  
  988.   animationDTClass * = "animation.datatype";
  989.  
  990. (*****************************************************************************)
  991.  
  992. CONST
  993.  
  994. (* Animation attributes *)
  995.   adtaDummy *          = aDummy + 600;
  996.   adtaModeID *         = modeID;
  997.   adtaKeyFrame *       = bitMap;
  998.         (* (struct BitMap * ) Key frame (first frame) bitmap *)
  999.  
  1000.   adtaColorRegisters * = colorRegisters;
  1001.   adtaCRegs *          = cRegs;
  1002.   adtaGRegs *          = gRegs;
  1003.   adtaColorTable *     = colorTable;
  1004.   adtaColorTable2 *    = colorTable2;
  1005.   adtaAllocated *      = allocated;
  1006.   adtaNumColors *      = numColors;
  1007.   adtaNumAlloc *       = numAlloc;
  1008.  
  1009.   adtaRemap * = remap;
  1010.         (* (BOOL) : Remap animation (defaults to TRUE) *)
  1011.  
  1012.   adtaScreen * = screen;
  1013.         (* (struct Screen * ) Screen to remap to *)
  1014.  
  1015.   adtaNumSparse * = numSparse;
  1016.         (* (UWORD) Number of colors used for sparse remapping *)
  1017.  
  1018.   adtaSparseTable * = sparseTable;
  1019.         (* (UBYTE * ) Pointer to a table of pen numbers indicating
  1020.          * which colors should be used when remapping the image.
  1021.          * This array must contain as many entries as there
  1022.          * are colors specified with ADTA_NumSparse *)
  1023.  
  1024.   adtaWidth * = adtaDummy + 1;
  1025.   adtaHeight * = adtaDummy + 2;
  1026.   adtaDepth * = adtaDummy + 3;
  1027.   adtaFrames * = adtaDummy + 4;
  1028.         (* (ULONG) Number of frames in the animation *)
  1029.  
  1030.   adtaFrame * = adtaDummy + 5;
  1031.         (* (ULONG) Current frame *)
  1032.  
  1033.   adtaFramesPerSecond * = adtaDummy + 6;
  1034.         (* (ULONG) Frames per second *)
  1035.  
  1036.   adtaFrameIncrement * = adtaDummy + 7;
  1037.         (* (LONG) Amount to change frame by when fast forwarding or
  1038.          * rewinding.  Defaults to 10. *)
  1039.  
  1040. (* Sound attributes *)
  1041.   adtaSample * = sample;
  1042.   adtaSampleLength * = sampleLength;
  1043.   adtaPeriod * = period;
  1044.   adtaVolume * = volume;
  1045.   adtaCycles * = cycles;
  1046.  
  1047. (*****************************************************************************)
  1048.  
  1049. CONST
  1050.  
  1051.   idANIM * = 0414E494DH; (* MAKE_ID('A','N','I','M') *)
  1052.   idANHD * = 0414E4844H; (* MAKE_ID('A','N','H','D') *)
  1053.   idDLTA * = 0444C5341H; (* MAKE_ID('D','L','T','A') *)
  1054.  
  1055. (*****************************************************************************)
  1056.  
  1057. TYPE
  1058.  
  1059. (*  Required ANHD structure describes an ANIM frame *)
  1060.   AnimHeader * = RECORD
  1061.     operation * : SHORTINT;   (*  The compression method:
  1062.                                    0  set directly (normal ILBM BODY),
  1063.                                    1  XOR ILBM mode,
  1064.                                    2  Long Delta mode,
  1065.                                    3  Short Delta mode,
  1066.                                    4  Generalized short/long Delta mode,
  1067.                                    5  Byte Vertical Delta mode
  1068.                                    6  Stereo op 5 (third party)
  1069.                                   74  (ascii 'J') reserved for Eric Graham's
  1070.                                       compression technique (details to be
  1071.                                       released later). *)
  1072.  
  1073.     mask * : s.SET8;          (* (XOR mode only - plane mask where each
  1074.                                    bit is set =1 if there is data and =0
  1075.                                    if not.) *)
  1076.  
  1077.     width * : e.UWORD;         (* (XOR mode only - width and height of the *)
  1078.     height * : e.UWORD;        (* area represented by the BODY to eliminate *)
  1079.                                 (* unnecessary un-changed data *)
  1080.  
  1081.  
  1082.     left * : INTEGER;          (* (XOR mode only - position of rectangular *)
  1083.     top * : INTEGER;           (* area representd by the BODY) *)
  1084.  
  1085.  
  1086.     absTime * : e.ULONG;       (* Timing for a frame relative to the time
  1087.                                    the first frame was displayed, in
  1088.                                    jiffies (1/60 sec) *)
  1089.  
  1090.     relTime * : e.ULONG;       (* Timing for frame relative to time
  1091.                                    previous frame was displayed - in
  1092.                                    jiffies (1/60 sec) *)
  1093.  
  1094.     interleave * : SHORTINT;    (* Indicates how may frames back this data is to
  1095.                                    modify.  0 defaults to indicate two frames back
  1096.                                    (for double buffering). n indicates n frames back.
  1097.                                    The main intent here is to allow values
  1098.                                    of 1 for special applications where
  1099.                                    frame data would modify the immediately
  1100.                                    previous frame. *)
  1101.  
  1102.     pad0 * : SHORTINT;          (* Pad byte, not used at present. *)
  1103.  
  1104.     flags * : LONGINT;          (* 32 option bits used by options=4 and 5.
  1105.                                    At present only 6 are identified, but the
  1106.                                    rest are set =0 so they can be used to
  1107.                                    implement future ideas.  These are defined
  1108.                                    for option 4 only at this point.  It is
  1109.                                    recommended that all bits be set =0 for
  1110.                                    option 5 and that any bit settings
  1111.                                    used in the future (such as for XOR mode)
  1112.                                    be compatible with the option 4
  1113.                                    bit settings.   Player code should check
  1114.                                    undefined bits in options 4 and 5 to assure
  1115.                                    they are zero.
  1116.  
  1117.                                    The six bits for current use are:
  1118.  
  1119.                                     bit #       set =0                  set =1
  1120.                                     ===============================================
  1121.                                     0           short data              long data
  1122.                                     1           set                     XOR
  1123.                                     2           separate info           one info list
  1124.                                                 for each plane          for all planes
  1125.                                     3           not RLC                 RLC (run length coded)
  1126.                                     4           horizontal              vertical
  1127.                                     5           short info offsets      long info offsets
  1128.                                 *)
  1129.  
  1130.     pad * : ARRAY 16 OF e.UBYTE; (* This is a pad for future use for future
  1131.                                    compression modes. *)
  1132.   END;
  1133.  
  1134. (*****************************************************************************)
  1135.  
  1136. CONST
  1137.  
  1138.   adtmDummy * = 0700H;
  1139.  
  1140.   adtmLoadFrame * = 0701H;
  1141.     (* Used to load a frame of the animation *)
  1142.  
  1143.   adtmUnloadFrame * = 0702H;
  1144.     (* Used to unload a frame of the animation *)
  1145.  
  1146.   adtmStart * = 0703H;
  1147.     (* Used to start the animation *)
  1148.  
  1149.   adtmPause * = 0704H;
  1150.     (* Used to pause the animation (don't reset the timer) *)
  1151.  
  1152.   adtmStop * = 0705H;
  1153.     (* Used to stop the animation *)
  1154.  
  1155.   adtmLocate * = 0706H;
  1156.     (* Used to locate a frame in the animation (as set by a slider...) *)
  1157.  
  1158. (*****************************************************************************)
  1159.  
  1160. TYPE
  1161.  
  1162. (* ADTM_LOADFRAME, ADTM_UNLOADFRAME *)
  1163.  
  1164.   ADTFrame * = RECORD (i.MsgBase)
  1165.     msg *       : i.Msg;
  1166.     timeStamp * : e.ULONG;                     (* Timestamp of frame to load *)
  1167.  
  1168.     (* The following fields are filled in by the ADTM_LOADFRAME method, *)
  1169.     (* and are read-only for any other methods. *)
  1170.  
  1171.     frame * : e.ULONG;                         (* Frame number *)
  1172.     duration * : e.ULONG;                      (* Duration of frame *)
  1173.  
  1174.     bitMap * : gfx.BitMapPtr;                      (* Loaded BitMap *)
  1175.     cMap * : gfx.ColorMapPtr;                      (* Colormap, if changed *)
  1176.  
  1177.     sample * : e.APTR;           (* Sound data *)
  1178.     sampleLength * : e.ULONG;
  1179.     period * : e.ULONG;
  1180.  
  1181.     userData * : e.APTR;                       (* Used by load frame for extra data *)
  1182.   END;
  1183.  
  1184. (* ADTM_START, ADTM_PAUSE, ADTM_STOP, ADTM_LOCATE *)
  1185.   ADTStart * = RECORD (i.MsgBase)
  1186.     msg *   : i.Msg;
  1187.     frame * : e.ULONG;                         (* Frame # to start at *)
  1188.   END;
  1189.  
  1190. (*****************************************************************************)
  1191.  
  1192.  
  1193. (* --- Library Base variable ------------------------------------------- *)
  1194.  
  1195. CONST
  1196.  
  1197.   datatypesName * = "datatypes.library";
  1198.  
  1199. VAR
  1200.  
  1201.   base* : e.LibraryPtr;
  1202.  
  1203.  
  1204. (*-- Library Functions ------------------------------------------------*)
  1205.  
  1206. TYPE (* Return type for GetDTMethods() *)
  1207.  
  1208.   MethodArrayPtr * = POINTER TO ARRAY 32767 OF LONGINT;
  1209.  
  1210. (*--- functions in V40 or higher (Release 3.1) ---*)
  1211.  
  1212. (* Public entries *)
  1213.  
  1214. PROCEDURE ObtainDataTypeA* [base,-36]
  1215.   ( type   [0] : e.ULONG;
  1216.     handle [8] : e.APTR;
  1217.     attrs  [9] : ARRAY OF u.TagItem )
  1218.   : DataTypePtr;
  1219.  
  1220. PROCEDURE ObtainDataType* [base,-36]
  1221.   ( type   [0]  : e.ULONG;
  1222.     handle [8]  : e.APTR;
  1223.     attrs  [9]..: u.Tag )
  1224.   : DataTypePtr;
  1225.  
  1226. PROCEDURE ReleaseDataType* [base,-42]
  1227.   ( dt [8] : DataTypePtr );
  1228.  
  1229. PROCEDURE NewDTObjectA* [base,-48]
  1230.   ( name  [0] : ARRAY OF CHAR;
  1231.     attrs [8] : ARRAY OF u.TagItem )
  1232.   : i.ObjectPtr;
  1233.  
  1234. PROCEDURE NewDTObject* [base,-48]
  1235.   ( name  [0]  : ARRAY OF CHAR;
  1236.     attrs [8]..: u.Tag )
  1237.   : i.ObjectPtr;
  1238.  
  1239. PROCEDURE DisposeDTObject* [base,-54]
  1240.   ( o [8] : i.ObjectPtr );
  1241.  
  1242. PROCEDURE SetDTAttrsA* [base,-60]
  1243.   ( o      [8] : i.ObjectPtr;
  1244.     win    [9] : i.WindowPtr;
  1245.     req   [10] : i.RequesterPtr;
  1246.     attrs [11] : ARRAY OF u.TagItem )
  1247.   : e.ULONG;
  1248.  
  1249. PROCEDURE SetDTAttrs* [base,-60]
  1250.   ( o      [8]  : i.ObjectPtr;
  1251.     win    [9]  : i.WindowPtr;
  1252.     req   [10]  : i.RequesterPtr;
  1253.     attrs [11]..: u.Tag )
  1254.   : e.ULONG;
  1255.  
  1256. PROCEDURE GetDTAttrsA* [base,-66]
  1257.   ( o      [8] : i.ObjectPtr;
  1258.     attrs [10] : ARRAY OF u.TagItem )
  1259.   : e.ULONG;
  1260.  
  1261. PROCEDURE GetDTAttrs* [base,-66]
  1262.   ( o      [8]  : i.ObjectPtr;
  1263.     attrs [10]..: u.Tag )
  1264.   : e.ULONG;
  1265.  
  1266. PROCEDURE AddDTObject* [base,-72]
  1267.   ( win [8] : i.WindowPtr;
  1268.     req [9] : i.RequesterPtr;
  1269.     o  [10] : i.ObjectPtr;
  1270.     pos [0] : LONGINT )
  1271.   : LONGINT;
  1272.  
  1273. PROCEDURE RefreshDTObjectA* [base,-78]
  1274.   ( o      [8] : i.ObjectPtr;
  1275.     win    [9] : i.WindowPtr;
  1276.     req   [10] : i.RequesterPtr;
  1277.     attrs [11] : ARRAY OF u.TagItem );
  1278.  
  1279. PROCEDURE RefreshDTObject* [base,-78]
  1280.   ( o      [8]  : i.ObjectPtr;
  1281.     win    [9]  : i.WindowPtr;
  1282.     req   [10]  : i.RequesterPtr;
  1283.     attrs [11]..: u.Tag );
  1284.  
  1285. PROCEDURE DoAsyncLayout* [base,-84]
  1286.   ( o   [8] : i.ObjectPtr;
  1287.     gpl [9] : i.LayoutPtr )
  1288.   : e.ULONG;
  1289.  
  1290. PROCEDURE DoDTMethodA* [base,-90]
  1291.   ( o        [8] : i.ObjectPtr;
  1292.     win      [9] : i.WindowPtr;
  1293.     req     [10] : i.RequesterPtr;
  1294.     VAR msg [11] : i.MsgBase )
  1295.   : e.ULONG;
  1296.  
  1297. PROCEDURE DoDTMethod* [base,-90]
  1298.   ( o    [8]  : i.ObjectPtr;
  1299.     win  [9]  : i.WindowPtr;
  1300.     req [10]  : i.RequesterPtr;
  1301.     msg [11]..: SYS.LONGWORD )
  1302.   : e.ULONG;
  1303.  
  1304. PROCEDURE RemoveDTObject* [base,-96]
  1305.   ( win [8] : i.WindowPtr;
  1306.     o   [9] : i.ObjectPtr )
  1307.   : LONGINT;
  1308.  
  1309. PROCEDURE GetDTMethods* [base,-102]
  1310.   ( object [8] : i.ObjectPtr )
  1311.   : MethodArrayPtr;
  1312.  
  1313. PROCEDURE GetDTTriggerMethods* [base,-108]
  1314.   ( object [8] : i.ObjectPtr )
  1315.   : MethodPtr;
  1316.  
  1317. PROCEDURE PrintDTObjectA* [base,-114]
  1318.   ( o        [8] : i.ObjectPtr;
  1319.     w        [9] : i.WindowPtr;
  1320.     r       [10] : i.RequesterPtr;
  1321.     VAR msg [11] : i.MsgBase )
  1322.   : e.ULONG;
  1323.  
  1324. PROCEDURE PrintDTObject* [base,-114]
  1325.   ( o    [8]  : i.ObjectPtr;
  1326.     w    [9]  : i.WindowPtr;
  1327.     r   [10]  : i.RequesterPtr;
  1328.     msg [11]..: SYS.LONGWORD )
  1329.   : e.ULONG;
  1330.  
  1331. PROCEDURE GetDTString* [base,-138]
  1332.   ( id [0] : e.ULONG )
  1333.   : e.LSTRPTR;
  1334.  
  1335.  
  1336. (*-- Library Base variable --------------------------------------------*)
  1337.  
  1338. <*$LongVars-*>
  1339.  
  1340. (*-----------------------------------*)
  1341. PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
  1342.  
  1343. BEGIN (* CloseLib *)
  1344.   IF base # NIL THEN e.CloseLibrary (base) END
  1345. END CloseLib;
  1346.  
  1347. BEGIN
  1348.   base := e.OpenLibrary (datatypesName, e.libraryMinimum);
  1349.   IF base # NIL THEN Kernel.SetCleanup (CloseLib) END;
  1350. END Datatypes.
  1351.